package cn.truistic.enmicromsg.base;

import android.accessibilityservice.AccessibilityService;
import android.content.Intent;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import android.view.accessibility.AccessibilityEvent;
import android.widget.Toast;
import java.util.Timer;
import java.util.TimerTask;
import cn.truistic.enmicromsg.main.ui.HomeFragment;

/**
 * Created by ts on 2018/6/8.
 * NAME: ts
 * 获取即时微信聊天记录服务类
 */

public class WeChatLogService extends AccessibilityService {
    private Task task;
    private Task task2;
    private Timer timer;

    @Override
    public void onAccessibilityEvent( AccessibilityEvent event ) {
//        int eventType = event.getEventType();
//        switch ( eventType ) {
//            case  AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED: //监听通知栏！
//                if ( event.getPackageName().toString().equals("com.tencent.mm")) {
//                    List<CharSequence> texts = event.getText();
//                    for (CharSequence text : texts) {
//                        String content = text.toString();
//                        if (!TextUtils.isEmpty(content)) { //需要在此处理微信数据，然后广播出去，在首页中显示出来。
//                            String msgUserame = "";
//                            String msgContent = "";
//                            if ( content.contains(":") ) {
//                                msgUserame = content.substring(0, content.indexOf(':'));
//                                msgContent = content.substring(content.indexOf(':') + 1);
//                                Log.e("TAG", msgUserame + "----->" + msgContent);
////                              HomeFragment.detect();
//                                HomeFragment.detect(true);
//                            }
//                        }
//                    }
//                }
//                break;
//        }
    }

    /**
     * 必须重写的方法：系统要中断此service返回的响应时会调用。在整个生命周期会被调用多次。
     */
    @Override
    public void onInterrupt() {
        Toast.makeText(this, "服务结束了，请手动打开服务-----", Toast.LENGTH_SHORT).show();
    }

    /**
     * 服务开始连接
     */
    @Override
    protected void onServiceConnected() {
//        Toast.makeText(this, "服务已开启", Toast.LENGTH_SHORT).show();
        timer = new Timer();
        task = new Task();
        task2 = new Task2();
        //schedule 计划安排，时间表
        timer.schedule(task, 3 * 1 * 1000 ,  15 * 1 * 1000 ); //聊天记录的计时器
        timer.schedule(task2,  0 ,  1000 * 60 ); //联系人的计时器  60
        super.onServiceConnected();
    }

    /**
     * TimerTask对象，主要用于定时上传到服务器信息
     */
    public class Task extends TimerTask {
        @Override
        public void run() {
            Log.e("聊天消息", "开始执行执行timer定时任务...");
            new Handler(Looper.getMainLooper()).post(new Runnable() {
                @Override
                public void run() {
                    HomeFragment.detect(HomeFragment.UPLOAD_TYPE_MESSAGE);
                }
            });
        }
    }


    /**
     * TimerTask对象，主要用于定时上传到服务器信息
     * 联系人的计时器
     */
    public class Task2 extends Task {
        @Override
        public void run() {
            Log.e( "联系人" , "开始执行执行timer定时任务..." ) ;
            new Handler(Looper.getMainLooper()).post(new Runnable() {
                @Override
                public void run() {
                    HomeFragment.detect( HomeFragment.UPLOAD_TYPE_CONTACT );
                }
            });
        }
    }



    /**
     * 服务断开
     * @param    intent
     * @return
     */
    @Override
    public boolean onUnbind( Intent intent ) {
        Toast.makeText(this , "服务已被关闭"  , Toast.LENGTH_SHORT ).show();
        if (timer != null) {
            timer.cancel();
            timer = null;
        }
        if (task != null) {
            task.cancel();
            task = null;
        }
        if (task2 != null) {
            task2.cancel();
            task2 = null;
        }
        return super.onUnbind(intent);
    }
}